// user.controller.js
const jwt=require('jsonwebtoken')
const { createUser, getUserInfo ,updateDataById } = require('../service/user.service')
const {userRegisterError,updatePasswordError}= require("../constant/err.type");
const {JWT_SECRET}=require('../config/config.default');
class UserContraller {
  // 用户注册模块业务处理
  async register(ctx,next) {
    // 1.获取数据
    const { user_name, password } = ctx.request.body
    
    try {
      // 2.操作数据库
      const res = await createUser(user_name, password)
      // 3.返回结果
      ctx.body={
        code:0,
        message:'用户注册成功！',
        result:{
          id:res.id,
          user_name:res.user_name
        }
      }
    } catch (error) {
    console.error("用户注册错误", ctx.request.body);
    ctx.app.emit("error", userRegisterError, ctx);
   }
   
   
  }
  // 登录模块业务处理
  async login(ctx, next) {
    const {user_name}=ctx.request.body
    // 1.获取用户信息
    try {
      // （将除密码的其他信息存入res,写入token的payload）
      const {password,...res}=await getUserInfo({user_name})
      ctx.body={
        code:0,
        message:'用户登录成功！',
        result:{
          token:jwt.sign(res,JWT_SECRET,{expiresIn:'3d'})
        }

      }
    } catch (error) {
      console.error(error)
    }
  }
  // 修改密码
  async changePassword(ctx,next){
    // 1.获取数据
    const id = ctx.state.user.id
    const password = ctx.request.body.password
    console.log(id,password)
    // 2.操作数据
    try {
      const res=await updateDataById({id,password})
   // 3.返回结果
    if (res) {
      ctx.body={
        code :0,
        message:'修改密码成功！',
        result:'',
      }
    }else{
      console.error("修改密码失败", ctx.request.body.password);
      ctx.app.emit("error", updatePasswordError, ctx);
    }
      
    } catch (err) {
      console.error("修改密码失败", err);
    }
    
    
    
  }
}

module.exports = new UserContraller();
